/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.iscmoh.ebdrl.java.model.core;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Isaac
 */
@Entity
@Table(name="Licoes")
public class Licao implements Serializable{
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    private int numero;
    @ManyToOne
    private Revista revista;
    private String assunto;
    private int paginaInicial;
    private int paginaFinal;
    private String resumo;
    private String anotacoes;
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar dataEstudo;

    public Licao() {
        super();
    }

    public Licao(int numero, String assunto, int paginaInicial, int paginaFinal, Calendar dataEstudo) {
        super();
        this.numero = numero;
        this.assunto = assunto;
        this.paginaInicial = paginaInicial;
        this.paginaFinal = paginaFinal;
        this.dataEstudo = dataEstudo;
    }

    public Licao(int numero, Revista revista, String assunto, int paginaInicial, int paginaFinal, Calendar dataEstudo) {
        super();
        this.numero = numero;
        this.revista = revista;
        this.assunto = assunto;
        this.paginaInicial = paginaInicial;
        this.paginaFinal = paginaFinal;
        this.dataEstudo = dataEstudo;
    }

    public Licao(int numero, Revista revista, String assunto, int paginaInicial, int paginaFinal, String resumo, String anotacoes, Calendar dataEstudo) {
        super();
        this.numero = numero;
        this.revista = revista;
        this.assunto = assunto;
        this.paginaInicial = paginaInicial;
        this.paginaFinal = paginaFinal;
        this.resumo = resumo;
        this.anotacoes = anotacoes;
        this.dataEstudo = dataEstudo;
    }
    
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public int getNumero() {
        return numero;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public String getAnotacoes() {
        return anotacoes;
    }

    public void setAnotacoes(String anotacoes) {
        this.anotacoes = anotacoes;
    }

    public String getAssunto() {
        return assunto;
    }

    public void setAssunto(String assunto) {
        this.assunto = assunto;
    }

    public int getPaginaFinal() {
        return paginaFinal;
    }

    public void setPaginaFinal(int paginaFinal) {
        this.paginaFinal = paginaFinal;
    }

    public int getPaginaInicial() {
        return paginaInicial;
    }

    public void setPaginaInicial(int paginaInicial) {
        this.paginaInicial = paginaInicial;
    }

    public String getResumo() {
        return resumo;
    }

    public void setResumo(String resumo) {
        this.resumo = resumo;
    }
    
    public Revista getRevista() {
        return revista;
    }

    public void setRevista(Revista revista) {
        this.revista = revista;
    }

    public Calendar getDataEstudo() {
        return dataEstudo;
    }

    public void setDataEstudo(Calendar dataEstudo) {
        this.dataEstudo = dataEstudo;
    }

    @Override
    public String toString(){
        return "[" + revista.getNome()+ "#" +
      String.valueOf(numero) + "#" +
                     assunto + "#" +
                   ((dataEstudo!= null)
                               ?new SimpleDateFormat("dd/MM/yyyy").format(dataEstudo.getTime())
                               :"data desconhecida") + "#" +
                   ((resumo!= null && !resumo.trim().equals(""))
                           ?(resumo.substring(0, 25) + "...")
                           :"sem resumo") + "]";
    }
}
